package com.javaxiaobang.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;

/**
 * 功    能：
 * 作    者：tianqiang
 * 时    间：2019/11/14
 */
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    /**
     * 由于spring-boot-starter-security默认开启了CSRF校验，对于client端这类非界面应用来说，有些不合适，但是又没有配置文件的方式可以禁用，需要通过Java配置，进行禁用
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);
        http.csrf().disable();
        //注意：为了可以使用 http://${user}:${password}@${host}:${port}/eureka/ 这种方式登录,所以必须是httpBasic,
        // 如果是form方式,不能使用url格式登录
        http.authorizeRequests()
                //以/refresh和/actuator/bus-refresh不需要认证
                .antMatchers("/refresh","/actuator/bus-refresh").permitAll()
                .anyRequest().authenticated().and().httpBasic();
    }
}

